package com.microservice.microservicemovie;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * 开启 Eureka-client
 * 	-- 和 @EnableDiscoveryClient 的区别是：
 * 		EnableEurekaClient 只是开启 Eureka客户端，EnableDiscoveryClient可以开启Eureka,ZK 等等其他的客户端
 * 		不过需要额外的配置
 *
 * 	注解：
 * 	  @RibbonClient Spring Cloud还允许您通过使用@RibbonClient声明其他配置（位于RibbonClientConfiguration之上）来完全控制客户端（例如 负载均衡的规则）。
 * 	  只有定义在 MicroserviceMovieApplication 扫面不到的地方（只扫描这个类下面的子包），或者利用 其他注解才会生效
 *
 * 	  @ComponentScan
 * 	  	配置 spring-boot 强制扫描，或者排除扫描
 */
@EnableEurekaClient
@SpringBootApplication
public class MicroserviceMovieRibbonConfigApplication {

	/**
	 *  实现 Ribbon 自动化配置，作为负载平衡器客户端
	 * @return
	 */
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}

	public static void main(String[] args) {
		SpringApplication.run(MicroserviceMovieRibbonConfigApplication.class, args);
	}
}
